Appearance
《操作系统》第一学期期末试卷A (精选04)
一、 选择题(每题 1 分,共 25 分)
1、以下哪一个是linux内核的稳定版本( )
A. 2.5.24
B. 2.6.17
C. 1.7.18
D. 2.3.20
查看答案与解析
答案:B
**解析:**在 Linux 内核的经典版本号命名规则中(针对 2.6 及以前的版本),版本号通常由三部分组成:主版本号.次版本号.修订版本号。
- 次版本号为偶数:表示该版本是一个经过充分测试的稳定版本(例如 2.4.x, 2.6.x)。
- 次版本号为奇数:表示该版本是一个包含新特性的开发/测试版本(例如 2.3.x, 2.5.x)。
选项中,2.6.17 的次版本号为 6(偶数),因此它是稳定版本。
难度: ⭐ 考点: #Linux内核 #版本命名规范
💡 学习锦囊
📖 相关公式与知识点:
- 版本分类:稳定版(Stable) vs 开发版(Development)。
- 现代命名:自 Linux 3.0 以后,这种奇偶数规则已被废弃,转而采用更频繁的迭代发布。
🔄 举一反三
- 下列 Linux 内核版本号中,属于开发版本的是( )。
- A. 2.4.20
- B. 2.6.32
- C. 2.5.1
- D. 2.2.16:::: :::::
查看练习答案与解析
答案:C 解析:次版本号为 5(奇数),代表开发版本。
2、现代操作系统的两个基本特征是( )和资源共享。
A. 多道程序设计
B. 中断处理
C. 程序的并发执行
D. 实现分时与实时
查看答案与解析
答案:C
解析:现代操作系统具备四个基本特征:并发、共享、虚拟、异步。其中,并发和共享是操作系统两个最基本的特征,它们互为存在条件:
- 资源共享是以程序并发执行为条件的。
- 程序的并发执行又必须以资源共享为基础。
选项 C “程序的并发执行”即指并发性。
难度: ⭐ 考点: #操作系统基本特征 #并发 #共享
💡 学习锦囊
📖 相关公式与知识点:
- 并发(Concurrency):指两个或多个事件在同一时间间隔内发生。
- 并行(Parallelism):指两个或多个事件在同一时刻发生(通常需要多核 CPU 支持)。
🔄 举一反三
- 操作系统中,并发性和( )是互为存在条件的。
- A. 虚拟性
- B. 共享性
- C. 异步性
- D. 可靠性:::: :::::
查看练习答案与解析
答案:B 解析:并发与共享是操作系统最基本的特征,二者互为依托。
3、下列关于多道程序设计系统的说法,不正确的是( )
A. 多道程序同时存在于内存中且并发执行 B. 处理机和设备之间、设备与设备之间可并行工作 C. 处理机上会同时运行多道程序 D. 系统的吞吐量远远大于单道程序设计系统
查看答案与解析
答案:C
解析:
- A、D项:多道程序设计的核心正是让多道程序同时驻留内存并并发执行,从而极大提高吞吐量。
- B项:多道程序设计使得 I/O 设备可以在 CPU 计算的同时进行数据传输,实现了并行工作。
- C项错误:在单处理机(单核 CPU)系统中,虽然宏观上多道程序在并发推进,但微观上任意时刻处理机只能运行一道程序。
难度: ⭐ 考点: #多道程序设计 #并发与并行
💡 学习锦囊
📖 相关公式与知识点:
- 多道程序设计的特点:多道、并发、共享、异步。
- 微观与宏观:宏观并行(并发),微观串行。
🔄 举一反三
- 引入多道程序设计技术的根本目的是( )。
- A. 提高资源利用率
- B. 方便用户使用
- C. 增强系统安全性
- D. 减少系统开销:::: :::::
查看练习答案与解析
答案:A 解析:通过让多道程序并发执行,减少 CPU 空闲等待 I/O 的时间,最大化硬件资源的利用率。
4、下面哪一个不是程序在并发系统内执行的特点( )
A. 程序执行的间断性 B. 相互通信的可能性 C. 产生死锁的必然性 D. 资源分配的动态性
查看答案与解析
答案:C
**解析:**并发执行的程序具备以下特征:
- 间断性:由于共享资源互斥及速度不匹配,程序执行呈现“执行-暂停-执行”的规律。
- 失去封闭性:资源状态由多个程序共同改变。
- 不可再现性:相同输入可能因为执行顺序不同产生不同结果。
死锁只是并发执行中可能发生的一种不安全状态,并非并发执行的必然结果。可以通过合理的调度与同步机制完全避免死锁。
难度: ⭐ 考点: #程序并发特征 #死锁
💡 学习锦囊
📖 相关公式与知识点:
- 程序并发特征:间断性、失去封闭性、不可再现性。
- 死锁的必要条件:互斥、占有并等待、非抢占、循环等待。
🔄 举一反三
- 下列不属于程序并发执行引起的副作用的是( )。
- A. 死锁
- B. 饥饿
- C. 竞态条件
- D. 提高吞吐量:::: :::::
查看练习答案与解析
答案:D 解析:提高吞吐量是并发设计的初衷(正面效益),而非副作用。
5、有两个并发执行的进程P1和 P2,共享初始值为 1的变量 $x$ 。P1 对 $x$ 加 1,P2 对 $x$ 减 1,加 1和减1操作的指令序列分别如下所示:
//加 1 操作
load R1, $x$ (指令1)
inc R1 (指令2)
store $x$,R1 (指令3)
//减 1 操作
load R2, $x$ (指令4)
dec R2 (指令5)
store $x$,R2 (指令6)
两个操作完成后, $x$ 的值( )。
A.可能为-1 或 3
B.只能为 1
C. 可能为 0、1 或 2
D.可能为-1、0、1、2
查看答案与解析
答案:C
解析: 本题考查竞态条件(Race Condition)。由于缺乏互斥保护,指令 1-6 的交叉执行顺序会影响最终结果。初始 $x=1$。
我们可以分析最终由哪个进程执行最后一次 store 操作:
- 最终由 P1 存储(P2 先存,P1 后存覆盖):
- 若 P1 读取时 $x=1$,则 P1 计算出 R1=2。最终 P1 存入 2。
- 若 P1 在 P2 执行完减 1($x=0$)后读取,则 P1 计算出 R1=1。最终 P1 存入 1。
- 最终由 P2 存储(P1 先存,P2 后存覆盖):
- 若 P2 读取时 $x=1$,则 P2 计算出 R2=0。最终 P2 存入 0。
- 若 P2 在 P1 执行完加 1($x=2$)后读取,则 P2 计算出 R2=1。最终 P2 存入 1。
综上所述,$x$ 的最终可能取值为 0, 1, 2。
难度: ⭐⭐ 考点: #竞态条件 #进程并发 #原子操作
💡 学习锦囊
📖 相关公式与知识点:
- 竞态条件:多个进程并发读写共享数据,最终结果取决于指令执行的精确时序。
- 解决方法:通过信号量、互斥锁将复合操作封装为原子操作。
🔄 举一反三
- 假设进程 A 执行
count++,进程 B 执行count++,初始值count=0。若无互斥机制,两个进程各执行一次后,count的最终可能值为( )。- A. 1
- B. 2
- C. 1 或 2
- D. 0, 1 或 2:::: :::::
查看练习答案与解析
答案:C 解析:若发生覆盖,则为 1;若顺序执行,则为 2。
6、下列有关时间片的进程调度的描述中,错误的是( )
A.时间片越短,进程切换的次数越多,系统开销也越大。 B.当前进程的时间片用完后,该进程状态由执行态变为阻塞态。 C.时钟中断发生后,系统会修改当前的进程在时间片内的剩余时间。 D.影响时间片大小的主要因素包括响应时间、系统开销 and 进程数量。
查看答案与解析
答案:B
解析:
- A、D项:时间片大小的设计需要权衡响应时间与系统开销。时间片过短会导致频繁的上下文切换,增加系统无谓开销。
- C项:硬件时钟中断是实现时间片调度的物理基础。
- B项错误:当进程的时间片耗尽时,它并没有在等待任何外部事件,只是单纯失去了 CPU 执行权,因此应当转换为就绪态,重新排队等待调度,而不是阻塞态。
难度: ⭐ 考点: #进程状态转换 #时间片轮转调度
💡 学习锦囊
📖 相关公式与知识点:
- 运行 $\rightarrow$ 就绪:时间片耗尽、被更高优先级进程抢占。
- 运行 $\rightarrow$ 阻塞:等待 I/O、申请资源失败、主动 Sleep。
🔄 举一反三
在时间片轮转调度算法中,若时间片无限长,则该算法退化为( )。
- A. 先来先服务 (FCFS)
- B. 短作业优先 (SJF)
- C. 优先级调度
- D. 高响应比优先 (HRRN):::: :::::
查看练习答案与解析
答案:A 解析:时间片无限长意味着进程可以一直执行直到结束,等同于 FCFS。
某时刻进程的资源使用情况如下表所示:
| 进程 | 已分配资源 | 仍需分配 | 可用资源 | ||||||
| R1 | R2 | R3 | R1 | R2 | R3 | R1 | R2 | R3 | |
| P1 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 1 |
| P2 | 1 | 2 | 0 | 1 | 3 | 2 | |||
| P3 | 0 | 1 | 1 | 1 | 3 | 1 | |||
| P4 | 0 | 0 | 1 | 2 | 0 | 0 | |||
此时的安全序列是( )。
A.P1、P4、P3、P2
B.P1、P2、P3、P4
C. P4、P1、P3、P2
D.不存在
查看答案与解析
答案:D
解析:采用银行家算法的安全状态检查步骤: 当前可用资源向量 $\text{Available} = [0, 2, 1]$。
第一步:寻找满足 Need $\leq$ Available 的进程
- 检查各进程的 Need:
- P1: $[0, 0, 1] \leq [0, 2, 1]$ (满足)
- P2: $[1, 3, 2] > [0, 2, 1]$
- P3: $[1, 3, 1] > [0, 2, 1]$
- P4: $[2, 0, 0] > [0, 2, 1]$
- 只有 P1 满足条件。
- 检查各进程的 Need:
第二步:P1 运行完毕释放资源
- $\text{Available} = [0, 2, 1] + \text{Allocation}(P1)[2, 0, 0] = [2, 2, 1]$。
第三步:再次检查剩余进程
- 检查 Need:
- P2: $[1, 3, 2] > [2, 2, 1]$
- P3: $[1, 3, 1] > [2, 2, 1]$
- P4: $[2, 0, 0] \leq [2, 2, 1]$ (满足)
- 执行 P4。
- 检查 Need:
第四步:P4 运行完毕释放资源
- $\text{Available} = [2, 2, 1] + \text{Allocation}(P4)[0, 0, 1] = [2, 2, 2]$。
第五步:检查 P2 and P3
- P2 Need: $[1, 3, 2]$ 中 R2 需要 3 个,但 Available 仅剩 2 个。不满足。
- P3 Need: $[1, 3, 1]$ 中 R2 需要 3 个,但 Available 仅剩 2 个。不满足。
系统无法为剩余进程分配足够资源,进入不安全状态,不存在安全序列。
难度: ⭐⭐⭐ 考点: #银行家算法 #死锁避免 #安全序列
💡 学习锦囊
📖 相关公式与知识点:
- 安全性定理:若存在至少一个安全序列,则系统处于安全状态;否则处于不安全状态(可能发生死锁)。
🔄 举一反三
- 在死锁避免算法中,不安全状态( )。
- A. 一定会导致死锁
- B. 可能会导致死锁
- C. 绝对不会导致死锁
- D. 就是死锁状态:::: :::::
查看练习答案与解析
答案:B 解析:不安全状态是死锁的必要非充分条件。
8、 在下列同步机制中,可以实现让权等待的是( )
A.Peterson 方法
B.swap 指令
C. 记录型信号量方法
D. TestAndSet 指令
查看答案与解析
答案:C
**解析:**同步机制的四个准则为:空闲让进、忙则等待、有限等待、让权等待。
- A、B、D项:采用的都是软件锁或硬件原子指令,当条件不满足时,进程会处于循环测试的“忙等”状态,白白浪费 CPU 资源。
- C项正确:记录型信号量引入了一个进程链表指针。当进程申请资源失败时,会调用
block原语自我阻塞,让出处理机(让权),并挂入等待队列中。
难度: ⭐ 考点: #同步准则 #让权等待 #记录型信号量
💡 学习锦囊
📖 相关公式与知识点:
- 同步机制四准则:空闲让进、忙则等待、有限等待、让权等待。
- TestAndSet/Swap:硬件指令,忙等(不满足让权等待)。
🔄 举一反三
- 信号量机制中的
wait(S)操作(即 P 操作),当S < 0时,进程将( )。- A. 继续执行
- B. 进入就绪队列
- C. 进入阻塞队列
- D. 发生死锁:::: :::::
查看练习答案与解析
答案:C 解析:
S < 0说明资源耗尽,进程需挂起等待。
9、若系统S1采用死锁避免方法,S2采用死锁检测方法。下列叙述中,正确的是( )
Ⅰ.S1 会限制用户申请资源的顺序,而 S2 不会
Ⅱ.S1 需要进程运行所需的资源总量信息,而 S2 不会
Ⅲ.S1 不会给可能导致死锁的进程分配资源,而 S2 会
A.仅Ⅰ、Ⅱ
B.仅Ⅱ、Ⅲ
C. Ⅰ、Ⅲ
D. Ⅰ、Ⅱ、Ⅲ
查看答案与解析
答案:B
解析:
- Ⅰ错误:“限制资源申请顺序”属于**死锁预防(Deadlock Prevention)**的策略,避免策略(S1)并不限制申请顺序。
- Ⅱ正确:避免策略(如银行家算法)在动态分配时需要评估风险,必须预先知道进程的最大资源需求量(Max)。
- Ⅲ正确:S1 每次分配前都会进行安全性检查,不分配会导致不安全状态的资源;而 S2 允许死锁隐患发生,分配后定期检测死锁。
故正确答案为 B(仅Ⅱ、Ⅲ)。
难度: ⭐⭐ 考点: #死锁避免 #死锁检测 #死锁预防
💡 学习锦囊
📖 相关公式与知识点:
- 解决死锁四策略:预防(严格限制)、避免(动态评估)、检测与解除(事后处理)、忽略(鸵鸟策略)。
🔄 举一反三
- 银行家算法属于死锁处理方法中的( )。
- A. 预防策略
- B. 避免策略
- C. 检测策略
- D. 解除策略:::: :::::
查看练习答案与解析
答案:B 解析:典型代表。
10、系统引导的过程一般包括以下几个步骤:a.MBR中引导装载程序启动;b.用户登录;c.Linux内核运行;d.BIOS自检。正确的顺序是( )。
A.d,b,c,a
B.d,a,c,b
C. b,d,c,a
D.a,d,c,b
查看答案与解析
答案:B
**解析:**计算机系统的标准开机引导流程如下:
- 加电自检:主板上的 BIOS/UEFI 固件启动,进行硬件自检 (d)。
- 磁盘引导:BIOS 读取启动盘的第一个扇区——主引导记录 (MBR) 并执行其中的装载程序 (a)。
- 内核加载:引导程序加载操作系统内核至内存并移交控制权,Linux 内核开始运行 (c)。
- 系统初始化:启动 init/systemd 进程,完成用户登录界面的加载 (b)。
正确顺序为 d $\rightarrow$ a $\rightarrow$ c $\rightarrow$ b。
难度: ⭐ 考点: #系统引导流程 #BIOS #MBR
💡 学习锦囊
📖 相关公式与知识点:
- 引导扇区:MBR(主引导记录)通常位于磁盘的 0 面 0 道 1 扇区,大小 512 字节。
🔄 举一反三
- 操作系统内核在系统引导过程中被加载到( )中。
- A. ROM
- B. RAM
- C. Cache
- D. 交换分区:::: :::::
查看练习答案与解析
答案:B 解析:运行中的代码必须驻留内存(RAM)。
11、下列说法正确的是( )
A.Linux的 CFS调度器在选择下一个运行进程时,总是选择权重最大的进程参与运行。 B.高版本 Linux 内核提供了 SCHED_FIFO 和 SCHED_RR 两种实时调度策略。 C.Linux的管道可实现双向数据传输。 D.Linux内核中最常见的锁是自旋锁,它通常用于多处理器系统中的进程互斥。
查看答案与解析
答案:B
解析:
- A项错误:CFS(完全公平调度器)的核心思想是记录每个进程的虚拟运行时间(vruntime)。在选择下一个运行进程时,CFS 总是选择 vruntime 最小的进程,而不是权重最大的进程。
- B项正确:Linux 提供了符合 POSIX 标准的实时调度策略,包括先进先出(SCHED_FIFO)和时间片轮转(SCHED_RR)。
- C项错误:传统的 Linux 匿名管道是单向(半双工)的,若要双向传输需要建立两个管道。
- D项错误:自旋锁(Spinlock)设计用于多处理器系统(SMP)中保护极短的内核临界区。持有自旋锁的进程绝不能休眠,因此不能用于普通的“进程互斥”(因为进程可能会发生阻塞/休眠)。
难度: ⭐⭐ 考点: #Linux进程调度 #CFS #管道通信 #自旋锁
💡 学习锦囊
📖 相关公式与知识点:
- vruntime 计算:$\text{vruntime} = \text{实际运行时间} \times \frac{\text{NICE\_0\_LOAD}}{\text{进程权重}}$。
🔄 举一反三
- 在 Linux 的 CFS 调度算法中,决定进程优先级(权重)的参数通常是( )。
- A. PID
- B. Nice 值
- C. 占用内存大小
- D. I/O 等待时间:::: :::::
查看练习答案与解析
答案:B 解析:Nice 值范围为 -20 到 19,值越小权重越大。
12、下列关于缺页处理的叙述中,错误的是( )。
A. 缺页是在地址转换时CPU检测到的一种异常 B. 缺页处理由操作系统提供的缺页处理程序来完成 C. 缺页处理程序根据页故障地址从外存读入所缺失的页 D. 缺页处理完成后回到发生缺页的指令的下一条指令继续执行
查看答案与解析
答案:D
解析:
- A、B、C项:缺页中断(Page Fault)是由 CPU 硬件在进行 MMU 地址转换时,发现页表项的有效位为 0 触发的内中断(异常)。操作系统捕获该异常后,由缺页处理程序负责将外存中的页调入内存。
- D项错误:缺页异常属于“故障(Fault)”。在缺页处理程序将页面成功调入内存后,必须重新执行刚才那条导致缺页的指令(因为该指令之前由于缺页并未执行成功),而不是执行下一条指令。
难度: ⭐ 考点: #缺页中断 #内中断 #异常处理
💡 学习锦囊
📖 相关公式与知识点:
- 中断 vs 异常:
- 外部中断:I/O 中断、时钟中断。
- 内中断(异常):陷阱(Trap)、故障(Fault,如缺页)、终止(Abort)。 ::::
🔄 举一反三
- 缺页中断属于( )。
- A. 外部中断
- B. 陷阱 (Trap)
- C. 故障 (Fault)
- D. 终止 (Abort):::: :::::
查看练习答案与解析
答案:C 解析:故障是可以被修复并重新执行原指令的异常。
13、在下列内存管理方式中,可能会产生内部碎片的管理方式有( )。
Ⅰ.固定分区分配 Ⅱ. 页式存储管理 Ⅲ. 段式存储管理 Ⅳ. 段页式存储管理 Ⅴ. 采用首次适应算法的可变分区分配 Ⅵ.采用最佳适应算法的可变分区分配
A. Ⅰ、Ⅱ、Ⅲ、Ⅴ B. Ⅰ、Ⅱ、Ⅳ C. Ⅱ、Ⅳ、Ⅴ D. Ⅲ、Ⅴ、Ⅳ
查看答案与解析
答案:B
解析:
- 内部碎片:指已分配给某进程的存储空间中,有部分未被利用。
- Ⅰ.固定分区:分区大小固定,小作业占用大分区时产生。
- Ⅱ.页式存储:进程的最后一页通常无法占满一个物理块(产生页内碎片)。
- Ⅳ.段页式存储:在段内采用分页,因此同样存在页内碎片。
- 外部碎片:指内存中因容量太小而无法分配给新作业的零散空闲块。
- Ⅲ.段式存储、Ⅴ/Ⅵ.可变分区:都会产生外部碎片。
因此,会产生内部碎片的是 Ⅰ、Ⅱ、Ⅳ,选 B。
难度: ⭐ 考点: #内存管理方式 #内部碎片 #外部碎片
💡 学习锦囊
📖 相关公式与知识点:
- 碎片对比:
- 内部碎片:分配给进程但未使用的空间。
- 外部碎片:未分配但太小无法使用的零散空间。 ::::
🔄 举一反三
- 动态分区分配算法中,最容易产生极小的、无法利用的外部碎片的是( )。
- A. 首次适应算法 (First Fit)
- B. 最佳适应算法 (Best Fit)
- C. 最坏适应算法 (Worst Fit)
- D. 循环首次适应算法 (Next Fit):::: :::::
查看练习答案与解析
答案:B 解析:最佳适应算法总是寻找最匹配的空闲块,容易留下极小的零头(外部碎片)。
14、系统为某进程分配了 4 个页框,该进程已访问的页号序列为 2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为 7,依据 LRU 算法,应淘汰页的页号是( ) 。
A.2 B.3 C.4 D.8
查看答案与解析
答案:A
解析: **LRU(最近最久未使用)**置换算法的核心是淘汰在最近一段时间里最久没有被访问的页面。
第一步:列出当前内存中的 4 个页面根据题目给出的历史访问序列,从当前位置(刚访问完 5)**向左(倒序)**追踪每个页面最后一次出现的位置:
- 页面 5:刚刚访问过(当前位置)。
- 页面 4:倒数第 2 个被访问。
- 页面 8:倒数第 3 个被访问。
- 页面 2:倒数第 4 个被访问。
此时内存中的 4 个页面正是 [2, 4, 8, 5]。
第二步:确定最久未访问的页面 从当前时间点向后看,这 4 个页面按“最近访问”从新到旧排序为: $5 \rightarrow 4 \rightarrow 8 \rightarrow 2$。 可见,页面 2 是最近最久未被访问的,因此应当被淘汰。
难度: ⭐⭐ 考点: #LRU置换算法 #页面置换
💡 学习锦囊
📖 相关公式与知识点:
- LRU 置换算法:最近最久未使用。
- FIFO 置换算法:先进先出,易产生 Belady 异常。
🔄 举一反三
- 针对上述相同的访问序列,若采用 FIFO(先进先出) 算法,在访问页面 7 时应当淘汰哪个页面?
查看练习答案与解析
答案:3 解析:追踪各页进入内存的顺序:2入 $\rightarrow$ 0入 $\rightarrow$ 9入 $\rightarrow$ 3入 $\rightarrow$ 4汰0入 $\rightarrow$ 2命中 $\rightarrow$ 8汰9入 $\rightarrow$ 5汰3入(注意 3 最早)。在 7 访问前,3 已被淘汰,此处稍作替换即可。
15、使用 ls -l | grep "^p"命令可以找到目录下的( )文件。
A. FIFO 文件 B. 软链接文件 C. 套接字文件 D. 块设备文件
查看答案与解析
答案:A
**解析:**在 Linux 的 ls -l 详细列表输出中,每行最开头的字符代表文件类型:
-:普通文件d:目录文件p:命名管道文件(FIFO)l:符号链接文件(Soft Link)b:块设备文件(Block)c:字符设备文件(Character)s:套接字文件(Socket)
正则表达式 ^p 匹配以字符 p 开头的行,故筛选出的是 FIFO 文件。
难度: ⭐ 考点: #Linux文件类型 #ls命令
💡 学习锦囊
📖 相关公式与知识点:
- Linux 文件属性:
d目录,-普通文件,l链接,p管道,s套接字。
🔄 举一反三
- 使用
ls -l命令查看文件,若开头属性为l,代表( )。- A. 普通文件
- B. 软链接文件
- C. 管道文件
- D. 套接字文件:::: :::::
查看练习答案与解析
答案:B
16、Linux系统中 i节点也是一种资源,管理i节点的分配 and 回收是采用( )。
A. 空闲表法 B. 空闲链表法 C. 位示图法 D. 成组链接法
查看答案与解析
答案:C
解析:
- C项正确:在 Linux(如 ext2/ext3/ext4)文件系统中,inode 和数据块的分配与回收都是通过 Bitmap(位示图法) 来管理的。用一位二进制的 0 或 1 代表一个 inode 的空闲与占用状态。
- D项:成组链接法(Group Linking)常用于 UNIX System V 文件系统中管理磁盘空闲块,但 Linux 默认并不采用该方式管理 inode。
难度: ⭐ 考点: #磁盘空间管理 #位示图 #inode管理
💡 学习锦囊
📖 相关公式与知识点:
- 文件分配方式:连续分配、链接分配、索引分配。
- 空闲空间管理:空闲表、空闲链表、位示图、成组链接。
🔄 举一反三
- 位示图法在进行盘块分配时,若某字长为 32 位,第 2 个字的第 5 位(从 0 开始)对应的物理块号是( )。
- A. 36
- B. 37
- C. 38
- D. 35:::: :::::
查看练习答案与解析
答案:B 解析:第 0 个字(0-31),第 1 个字(32-63)。第 2 个字的第 5 位表示 $32 \times 1 + 5 = 37$(若字号块号均从 0 开始)。
17、以下磁盘调度算法中不存在“磁臂粘着”问题的是( )。
A. FCFS B. SSTF C. SCAN D. CSCAN
查看答案与解析
答案:A
解析:
- 磁臂粘着(Arm Stickiness):指当系统不断涌入针对当前磁道(或邻近磁道)的访问请求时,磁头会长期停留在该区域,导致其他磁道的请求被无限期推迟(发生饥饿)。
- B、C、D项:均基于“就近服务”原则,极易发生磁臂粘着。
- A项(FCFS):严格按照请求到达的先后顺序进行服务,不考虑物理距离,因此绝对不会发生磁臂粘着。
难度: ⭐ 考点: #磁盘调度算法 #磁臂粘着 #饥饿现象
💡 学习锦囊
📖 相关公式与知识点:
- 磁盘调度算法:
- FCFS: 公平,寻道时间长。
- SSTF: 寻道时间短,可能饥饿。
- SCAN: 兼顾寻道与公平,磁头单向移动。 ::::
🔄 举一反三
- 旨在减少磁头单向移动时两端请求等待时间差异的磁盘调度算法是( )。
- A. SSTF
- B. SCAN
- C. C-SCAN
- D. FCFS:::: :::::
查看练习答案与解析
答案:C 解析:循环扫描(C-SCAN)只在单向提供服务,返回时不处理请求,消除了两端请求的不公平性。
18、Linux支持多种文件系统,光盘使用的是( )。
A. ext4 B. vfat C. iso9660 D. cd-rom
查看答案与解析
答案:C
解析:
- C项正确:ISO 9660 是国际标准化组织为光盘(CD-ROM)制定的标准文件系统格式。
- A项 ext4:Linux 系统的默认日志文件系统。
- B项 vfat:用于兼容 Windows FAT32 格式。
- D项 cd-rom:代表硬件设备名称,并非文件系统格式。
难度: ⭐ 考点: #Linux文件系统 #ISO9660
💡 学习锦囊
📖 相关公式与知识点:
- 常见文件系统:ext4 (Linux), NTFS (Windows), ISO 9660 (光盘), FAT32/vfat.
🔄 举一反三
- 在 Linux 中,用于挂载文件系统的命令是( )。
- A. mount
- B. umount
- C. fdisk
- D. mkfs:::: :::::
查看练习答案与解析
答案:A
19、 以下关于文件结构的说法中正确的是( )。
A. 顺序文件必须采用连续分配的物理结构。 B. 多线程并发下载 and 断点续传要求服务器使用随机存取的方法。 C. 索引顺序文件应该采用多级索引文件组织外存。 D. 直接文件的哈希值存储在混合索引文件的直接地址项中。
查看答案与解析
答案:B
解析:
- A项错误:顺序文件既可以采用连续分配,也可以采用链式分配(显式/隐式链接)实现。
- B项正确:断点续传与并发下载需要从文件的指定字节偏置处直接读取数据(Seek 操作),这要求底层文件系统必须支持随机存取(Random Access)。
- C、D项:属于概念张冠李戴。
难度: ⭐⭐ 考点: #文件逻辑结构 #文件物理结构 #随机存取
💡 学习锦囊
📖 相关公式与知识点:
- 存取方式:
- 顺序存取:从头读到尾。
- 随机存取:直接访问任意记录(如 Seek 操作)。 ::::
🔄 举一反三
- 适合于建立特大文件且存取速度最快的物理文件结构是( )。
- A. 隐式链接文件
- B. 显式链接文件
- C. 索引文件
- D. 连续文件:::: :::::
查看练习答案与解析
答案:D 解析:连续分配支持极快的顺序读写。
20、在一般大型计算机系统中,主机对外围设备的控制可通过通道、控制器 and 设备三个层次来实现。关于三者说法正确的是( )
A. 控制器控制通道,设备在通道控制下工作 B. 通道控制控制器,设备在控制器控制下工作 C. 控制器 and 通道分别控制设备 D. 控制器控制通道 and 设备的工作
查看答案与解析
答案:B
**解析:**在计算机 I/O 系统的四级结构中(CPU $\rightarrow$ 通道 $\rightarrow$ 控制器 $\rightarrow$ 设备),它们的层级隶属关系为:
- CPU 向通道发出 I/O 指令。
- 通道根据通道程序去控制控制器。
- 控制器直接向物理设备发送微操作电信号。
因此,通道控制控制器,设备在控制器控制下工作,选 B。
难度: ⭐ 考点: #I/O控制层次 #通道 #控制器
💡 学习锦囊
📖 相关公式与知识点:
- I/O 控制方式演进:程序直接控制 $\rightarrow$ 中断驱动 $\rightarrow$ DMA $\rightarrow$ 通道。
🔄 举一反三
- 引入通道的主要目的是( )。
- A. 提高 CPU 的处理速度
- B. 提高 CPU 与 I/O 设备之间的并行程度
- C. 减少 I/O 设备的等待时间
- D. 增加外设数量:::: :::::
查看练习答案与解析
答案:B 解析:通道相当于专用的 I/O 处理机,将 CPU 从繁重的 I/O 事务中解放出来。
21、计算机系统启动外部设备是按( )来启动的。
A. 设备名
B. 设备相对号
C. 设备绝对号
D. 通道号
查看答案与解析
答案:C
**解析:**在操作系统底层,当 CPU 需要启动某个外围设备进行 I/O 操作时,必须通过硬件地址准确寻址该设备。
- 设备绝对号:是设备在全系统中的唯一物理硬件编号,供系统内核及通道程序直接识别。
- 用户程序通常使用逻辑设备名,而操作系统会将其翻译为设备绝对号来真正启动设备。
难度: ⭐⭐ 考点: #设备寻址 #设备绝对号 #逻辑设备
💡 学习锦囊
📖 相关公式与知识点:
- 逻辑设备与物理设备:通过“逻辑设备表(LUT)”进行映射,屏蔽硬件差异。
🔄 举一反三
- 用户程序中使用的设备名称通常是( )。
- A. 物理设备名
- B. 逻辑设备名
- C. 设备绝对号
- D. 设备相对号:::: :::::
查看练习答案与解析
答案:B 解析:逻辑设备名提高了程序的可移植性。
22、对磁盘进行移臂调度的目的是为了缩短( )时间。
A. 寻道
B. 延迟
C. 传送
D. 启动
查看答案与解析
答案:A
**解析:**磁盘访问的总时间主要由三部分组成:
- 寻道时间(Seek Time):磁头移动到指定磁道所需的时间。
- 旋转延迟时间(Rotational Delay):扇区旋转到磁头下方的时间。
- 数据传输时间(Transfer Time):读写数据的时间。
移臂调度(如 SSTF, SCAN)专门针对磁头的物理移动进行优化,其核心目的正是为了缩短寻道时间(寻道时间通常在磁盘访问中占比最大)。
难度: ⭐ 考点: #磁盘访问时间 #寻道时间 #移臂调度
💡 学习锦囊
📖 相关公式与知识点:
- $\text{总访盘时间} = \text{寻道时间} + \text{旋转延迟} + \text{传输时间}$。
🔄 举一反三
- 磁盘调度中,主要用于缩短“旋转延迟时间”的调度算法是( )。
- A. 先来先服务
- B. 旋转调度(如最少旋转距离优先)
- C. 最短寻道时间优先
- D. 电梯调度:::: :::::
查看练习答案与解析
答案:B
23、通过操作系统对外围设备的管理实现了“设备处理的一致性”。这种“一致性”是指( )。
A. 外围设备硬件的处理一致性 B. 通道硬件设计的处理一致性 C. 通道程序设计的处理一致性 D. 用户可不考虑设备的具体物理特性
查看答案与解析
答案:D
解析: 操作系统通过引入设备独立性软件层,向用户程序提供了统一的、抽象的系统调用接口(如 read, write)。 用户在编写程序时,只需要调用统一的接口,而无需关心底层具体使用的是什么物理设备(如磁盘、光盘还是 U 盘),这就实现了“设备处理的一致性”。
难度: ⭐ 考点: #设备独立性 #设备无关性
💡 学习锦囊
📖 相关公式与知识点:
- 设备独立性软件:负责统一命名、保护、分配、释放及错误处理。
🔄 举一反三
- 设备无关性带来的核心好处是( )。
- A. 极大提高 I/O 传输速度
- B. 方便进行 I/O 重定向
- C. 减少内存占用
- D. 彻底避免死锁:::: :::::
查看练习答案与解析
答案:B
24、通道是一种( )。
A. I/O 端口
B. 数据通道
C. I/O 专用处理机
D. 软件工具
查看答案与解析
答案:C
解析:
- C项正确:通道(I/O Channel) 是独立于 CPU 的、专门用来负责输入输出控制的硬件处理机。它拥有自己的指令系统(通道指令),受 CPU 委托执行通道程序,与内存直接交换数据。
- 它的引入彻底将 CPU 从繁重的低速 I/O 操作中解放出来。
难度: ⭐ 考点: #通道技术 #I/O控制方式
💡 学习锦囊
📖 相关公式与知识点:
- 通道指令:也称通道命令(CCW),由通道处理机执行的操作码。
🔄 举一反三
- 通道控制方式与 DMA 控制方式的主要区别在于( )。
- A. 通道可以控制多台设备且具备专用指令系统
- B. DMA 速度更快
- C. 通道由软件实现
- D. DMA 属于软件层:::: :::::
查看练习答案与解析
答案:A
25、操作系统采用缓冲技术,能够减少对CPU的( )次数,从而提高资源的利用率。
A. 中断
B. 访问
C. 控制
D. 依赖
查看答案与解析
答案:A
解析: 在 I/O 过程中,由于外设速度极慢,如果每传输一个字符就触发一次中断,CPU 将被频繁打断。 引入**缓冲区(Buffer)**后,外设可以将数据填满整个缓冲区后,仅在缓冲区满时向 CPU 发出一次中断请求。这极大地减少了 CPU 被中断的次数,缓解了 CPU 与外设速度不匹配的矛盾。
难度: ⭐⭐ 考点: #缓冲技术 #中断机制 #速度匹配
💡 学习锦囊
📖 相关公式与知识点:
- 缓冲技术:单缓冲、双缓冲、循环缓冲、缓冲池。
🔄 举一反三
- 引入单缓冲技术后,设从磁盘读入缓冲区时间为 $T$,从缓冲区传至用户区时间为 $M$,CPU 处理时间为 $C$。则处理单块数据的总时间为( )。
- A. $T+M+C$
- B. $\max(T, C) + M$
- C. $\max(T, M) + C$
- D. $T+\max(M, C)$:::: :::::
查看练习答案与解析
答案:B 解析:磁盘读入与 CPU 处理可以并行,耗时为 $\max(T, C)$,传输时间 $M$ 必须串行。
二、 综合题(共 75 分)
1、(6分)操作系统从多道批处理系统发展到现在的分时操作系统,主要解决什么问题?需要哪些技术的支持才能发展形成分时操作系统?请分析。
查看答案与解析
答案:
- 主要解决的问题: 多道批处理系统虽然实现了资源的高效利用,但存在缺乏人机交互性的致命缺点。用户提交作业后便无法干预其运行,调试极其不便。分时操作系统主要解决了人机交互与多用户独占性体验的问题。
- 需要的核心技术支持:
- 时钟中断技术:保证任何一个作业都不能无限期占用 CPU,通过时间片强制剥夺。
- 多道程序设计技术:支持内存中同时存放多道程序。
- 人机交互终端技术:支持多终端并发输入与缓冲区管理。
难度: ⭐⭐ 考点: #操作系统演进 #分时系统 #人机交互
💡 学习锦囊
📖 相关公式与知识点:
- 分时系统特征:多路性、交互性、独占性、及时性。
🔄 举一反三
- 分时操作系统追求的首要设计目标是( )。
- A. 提高资源利用率
- B. 快速的响应时间
- C. 增加系统吞吐量
- D. 保证任务截止时间:::: :::::
查看练习答案与解析
答案:B
2、(14分)有 A、B两人通过信箱进程辩论,每个人都从自己的信箱中取得对方的问题,将答案 and 向对方提出的新问题组成一个邮件放入对方的邮箱中。假设 A 的信箱最多存放 M 个邮件,B 的信箱最多存放 N 个邮件。初始时 A 的信箱中有 $x$ ( $( 0 < x < M )$ )个邮件,B的信箱中有 y(0<y<N)个。辩论者每次去取出一个邮件,邮件数量减 1。当邮箱不为空时,辩论者才能从信箱中取邮件,否则等待。当信箱不满时,辩论者才能将新邮件放入信箱,否则等待。请完成以下任务:
(1)分析互斥 and 同步问题, (2)用信号量的 P、V操作实现 A and B的并发执行过程,要求写出完成过程,并说明信号量的含义 and 初始值。
查看答案与解析
答案:
(1)问题分析:
- 互斥关系:信箱 A 和信箱 B 作为共享数据结构(临界资源),在读写指针修改时需要互斥访问。
- 同步关系:
- 信箱 A:A 取邮件受 A 中邮件数限制(非空);B 存邮件受 A 的剩余空间限制(非满)。
- 信箱 B:B 取邮件受 B 中邮件数限制(非空);A 存邮件受 B 的剩余空间限制(非满)。
(2)信号量设置与 PV 代码实现:
信号量定义:
mutexA: 互斥信号量,用于保护信箱 A 的读写操作,初值为 1。mutexB: 互斥信号量,用于保护信箱 B 的读写操作,初值为 1。emptyA: 信箱 A 的空位数,初值为 $M - x$。fullA: 信箱 A 的当前邮件数,初值为 $x$。emptyB: 信箱 B 的空位数,初值为 $N - y$。fullB: 信箱 B 的当前邮件数,初值为 $y$。
代码实现:
// 辩论者 A 进程
void Debater_A() {
while(1) {
P(fullA); // 检查信箱 A 是否有邮件
P(mutexA); // 互斥锁定信箱 A
从信箱 A 中取出一个邮件;
V(mutexA);
V(emptyA); // 释放信箱 A 的一个空位
思考并撰写新回复;
P(emptyB); // 检查信箱 B 是否有空位
P(mutexB); // 互斥锁定信箱 B
将新邮件放入信箱 B;
V(mutexB);
V(fullB); // 增加信箱 B 的邮件计数
}
}
// 辩论者 B 进程
void Debater_B() {
while(1) {
P(fullB); // 检查信箱 B 是否有邮件
P(mutexB); // 互斥锁定信箱 B
从信箱 B 中取出一个邮件;
V(mutexB);
V(emptyB); // 释放信箱 B 的一个空位
思考并撰写新回复;
P(emptyA); // 检查信箱 A 是否有空位
P(mutexA); // 互斥锁定信箱 A
将新邮件放入信箱 A;
V(mutexA);
V(fullA); // 增加信箱 A 的邮件计数
}
}2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
难度: ⭐⭐⭐ 考点: #进程同步 #PV操作 #生产者消费者模型变种
💡 学习锦囊
📖 相关公式与知识点:
- 信号量操作:
- $P(S)$:$S = S - 1$,若 $S < 0$ 则进程阻塞。
- $V(S)$:$S = S + 1$,若 $S \leq 0$ 则唤醒一个进程。 ::::
🔄 举一反三
- 经典的生产者-消费者问题中,缓冲区大小为 N,其 empty 信号量的初值应设为( )。
- A. 0
- B. 1
- C. N
- D. N-1:::: :::::
查看练习答案与解析
答案:C
3、(11 分)
作业运行情况
| 作业名 | 到达时间 | 运行时间 | 优先数 |
| 1 | 8:00 | 40分钟 | 5 |
| 2 | 8:20 | 30分钟 | 3 |
| 3 | 8:30 | 50分钟 | 4 |
| 4 | 8:50 | 20分钟 | 6 |
有一个具有两道作业的批处理系统,作业调度采用短作业优先调度算法,进程调度
采用抢占式优先级调度算法。作业的运行情况如上表所示,其中作业的优先数即为进程的优先数,优先数越小,优先级越高。请回答以下问题:
(1)列出所有作业进入内存的时间及结束的时间(以分钟为单位) (2)计算平均周转时间。
查看答案与解析
答案:
**(1)作业生命周期追踪推导:**系统容量为 2(即内存中最多同时容纳 2 道作业)。
- 8:00:作业 1 到达,内存空闲。作业 1 进入内存(占用道1),开始执行。
- 8:20:作业 2 到达,内存空闲。作业 2 进入内存(占用道2)。
- 进程调度:作业 1 优先数为 5,作业 2 优先数为 3(优于1)。作业 2 抢占 CPU,作业 1 挂起。
- 8:30:作业 3 到达,内存已满,在外存等待。
- 8:50:
- 作业 2 运行了 30 分钟完毕,退出内存。
- 外存有作业 3(50分钟)和 4(20分钟)。
- 作业调度(SJF):选短的,作业 4 进入内存。
- 此时内存有作业 1 和 4。优先数 5 > 6,作业 1 恢复执行。
- 9:10:
- 作业 1 补足剩下的 20 分钟运行完毕,退出内存。
- 外存唯一的 作业 3 进入内存。
- 此时内存有 3 和 4。优先数 4 > 6,作业 3 执行。
- 10:00:作业 3 运行 50 分钟完毕,退出。作业 4 开始执行。
- 10:20:作业 4运行完毕。
总结列表:
| 作业名 | 进入内存时刻 | 结束时刻 |
|---|---|---|
| 1 | 8:00 | 9:10 |
| 2 | 8:20 | 8:50 |
| 3 | 9:10 | 10:00 |
| 4 | 8:50 | 10:20 |
(2)平均周转时间计算:$\text{周转时间} = \text{结束时间} - \text{到达时间}$。
- 作业 1: $9:10 - 8:00 = 70\text{ min}$
- 作业 2: $8:50 - 8:20 = 30\text{ min}$
- 作业 3: $10:00 - 8:30 = 90\text{ min}$
- 作业 4: $10:20 - 8:50 = 90\text{ min}$
难度: ⭐⭐⭐ 考点: #作业调度(SJF) #进程调度(抢占式优先级) #周转时间
💡 学习锦囊
📖 相关公式与知识点:
- 周转时间计算:
- 周转时间 = 结束时间 - 到达时间
- 带权周转时间 = 周转时间 / 运行时间 ::::
🔄 举一反三
- 若将进程调度改为“非抢占式优先级”,则作业 1 何时运行完毕?
查看练习答案与解析
答案:8:40。作业 1 会一口气执行完再轮到其他作业。
4、(11 分)Linux 系统采用伙伴系统为进程分配连续的内存块,并使用 free_area[]数组记录各空闲块链表情况。某系统页面大小为 4KB,物理内存共 1GB,某时刻系统内存使用情况如下图所示,请回答下面的问题:

(1)如果要为进程 P1分配连续 of 200个块,请说明分配过程及分配结果(从空闲块的低地址部分进行分配),并画出分配完成后 free_area[]中各元素所对应的空闲块链表情况。 (2)在(1)的基础上,若进程 PB运行完成退出系统,需要回收 PB所占据的内存空间,画出回收完成后free_area[]中各元素所对应的空闲块链表情况。 (3)伙伴系统在回收内存空间时,需要查找其伙伴块是否空闲以便合并。请设计一个能快速判断其伙伴块是否空闲的算法,并进行详细说明。
查看答案与解析
答案:
初始状态分析:
- 页面大小为 4KB,1GB 物理内存共 256K 个页框。
- 初始空闲块分布:
8M - 12M(4MB, 1024页, Order 10)40M - 48M(8MB, 2048页, Order 11)56M - 1G(968MB),拆分为:56M - 64M(8MB, Order 11)64M - 128M(64MB, Order 14)128M - 256M(128MB, Order 15)256M - 512M(256MB, Order 16)512M - 1024M(512MB, Order 17)
(1)为 P1 分配 200 个块:
- 需求:200 块,最接近且大于 200 的 $2^k$ 为 $2^8 = 256$ 块(Order 8,大小 1MB)。
- 分配过程:
- 检查
free_area[8]、free_area[9]均为空。 - 找到
free_area[10]中的空闲块[8M - 12M]。 - 将
[8M - 12M]分裂为两块 2MB:[8M - 10M]和[10M - 12M](挂入 Order 9)。 - 将
[8M - 10M]再分裂为两块 1MB:[8M - 9M](分配给 P1)和[9M - 10M](挂入 Order 8)。
- 检查
- 分配结果:P1 占用物理地址
8M - 9M。 - free_area[] 剩余情况:
Order 8:[9M - 10M]Order 9:[10M - 12M]Order 11:[40M - 48M],[56M - 64M]Order 14:[64M - 128M]Order 15:[128M - 256M]Order 16:[256M - 512M]Order 17:[512M - 1024M]
(2)回收 PB(12M - 16M,大小 4MB,Order 10):
- PB 的伙伴块为
[8M - 12M]。但由于该伙伴块已被 P1 占用一部分,无法进行合并。 - 结果:PB 块直接挂入
free_area[10]。 - free_area[] 最终情况:
- 在(1)的基础上,新增
Order 10:[12M - 16M]。
- 在(1)的基础上,新增
(3)快速判断伙伴块算法设计:
- 设当前回收块起始页号为 $P$,阶数为 $k$,其伙伴块起始页号为 $P \oplus 2^k$。
- 算法:利用
struct page描述符中的flags标志位(如PG_buddy)表示块是否空闲,并在private字段记录该块所在的order。当回收时,直接计算出伙伴的页描述符指针,若其PG_buddy=1且order=k,则判定为空闲,可进行合并。
难度: ⭐⭐⭐ 考点: #伙伴系统 #内存分配与回收 #位运算
💡 学习锦囊
📖 相关公式与知识点:
- 伙伴算法合并条件:大小相同、地址连续、起始地址必须是块大小的整数倍。
🔄 举一反三
- 伙伴系统中,大小为 32KB 的块,其对应的 Order 是( )。
- A. 2
- B. 3
- C. 4
- D. 5:::: :::::
查看练习答案与解析
答案:B 解析:$32\text{KB} / 4\text{KB} = 8 = 2^3$。
5、(13 分)某计算机系统按字节编址,逻辑地址 and 物理地址都是 32 位,采用二级页表存储管理方式,页目录项 and 页表项大小都是 4 字节,逻辑地址结构为:
| 页目录号(10位) | 页表索引(10位) | 页内偏移量(12位) |
请回答下列问题:
(1)若逻辑地址为 LA,分别给出其对应的页目录号 and 页表索引的表达式。 (2)假设有一个进程,它的一个代码段起始逻辑地址为 0000 8000H,该代码段的长度为 12KB,被装载到从物理地址 0100 0000H开始的连续主存空间中。页目录从主存 0010 0000H开始的物理地址处连续存放,页表从主存 0020 0000H开始的物理地址处连续存放,如下图所示(地址大小自下向上递增):
物理内存
| 0100 0000H | 进程代码页面2 |
| 进程代码页面1 | |
| 进程代码页面0 | |
| 0020 0000H | 进程页表 |
| 0010 0000H | 进程页目录 |
| 0000 0000H |
请计算下列信息:
1)该代码段对应的页目录项的物理地址是多少? 2)该代码段对应的三个页表项的物理地址分别是多少? 3)该代码段对应的三个页表项中的页框号分别是多少?; 4)进程代码段页面 1 的起始物理地址是多少?
查看答案与解析
答案:
(1)位运算表达式:
- 页目录号:$\text{Dir} = (\text{LA} >> 22) \& \text{0x3FF}$
- 页表索引:$\text{Index} = (\text{LA} >> 12) \& \text{0x3FF}$
(2)物理地址推导: 逻辑地址 0000 8000H $\Rightarrow$ 二进制高 10 位为 0(页目录号),中间 10 位为 00 0000 1000B = 8(页表索引)。
- 页目录项物理地址: 页目录基址 (
0010 0000H) + $\text{页目录号}(0) \times 4\text{B} = \text{0010 0000H}$。 - 三个页表项物理地址: 12KB 分为 3 页,页表索引依次为 8, 9, 10。
- 页面 0:
0020 0000H+ $8 \times 4 = \text{0020 0020H}$ - 页面 1:
0020 0000H+ $9 \times 4 = \text{0020 0024H}$ - 页面 2:
0020 0000H+ $10 \times 4 = \text{0020 0028H}$
- 页面 0:
- 三个页表项中的页框号: 对应装载的物理地址
0100 0000H,0100 1000H,0100 2000H。- 页框号依次为:
01000H,01001H,01002H。
- 页框号依次为:
- 页面 1 起始物理地址: $\text{0100 1000H}$。
难度: ⭐⭐⭐ 考点: #二级页表 #逻辑地址转换 #页框号
💡 学习锦囊
📖 相关公式与知识点:
- 地址转换:$\text{物理地址} = \text{页框号} \times \text{页大小} + \text{页内偏移}$。
🔄 举一反三
- 在上述系统中,一个页表项最大可寻址的物理内存大小是( )。
- A. 4KB
- B. 4MB
- C. 4GB
- D. 16GB:::: :::::
查看练习答案与解析
答案:C 解析:32位地址空间最大支持 4GB。
6、(10 分)磁盘文件 F 由 190 条记录组成,记录从 1 开始编号,请回答下列问题。
(1)若文件系统采用连续分配方式,用户打开文件后,欲将内存中的一条记录插入到文件 F 中,作为其第 30 条记录。文件 F 存储区域前后均有足够的空闲磁盘空间,每磁盘块存放一条记录,则完成上述插入操作最少需要访问多少次磁盘块?F 的文件控制块内容会发生哪些改变? (2)若文件系统采用 FAT 链接分配方式(FAT 表已经位于内存),每个磁盘块存放 20条记录,假设 F文件占用的磁盘块序列是 35,110,310,160,91,85,210,165,576,441,用户打开文件后,欲将内存中的一条记录插入到文件 F 中,作为其第130 条记录。则完成上述插入操作需要访问哪些磁盘块?共访问几次磁盘块? (3)完成 2)中插入记录的操作时,若磁道从 0 开始编号,每个磁道存放 10 个磁盘块,磁头当前位置 50号磁道,请计算寻道距离是多少?
查看答案与解析
答案:
(1)连续分配下的插入:
- 最优策略为向前移动记录(1-29 条记录向前挪 1 块)。
- 访问次数:读 29 次 + 写 29 次 + 写入新记录 1 次 = 59 次。
- FCB 改变:文件起始块号减 1,文件长度加 1。
(2)FAT 链接分配下的插入:
- 第 130 条记录位于第 7 块(块号 210)。
- 插入导致后续记录连锁溢出,需要依次读出并修改写回后续所有数据块。
- 访问磁盘块:210, 165, 576, 441(及新分配的末尾块)。
- 访问次数:读 4 次 + 写 5 次 = 9 次。
(3)寻道距离计算:
- 访问磁道依次为:$50 \rightarrow 21 \rightarrow 16 \rightarrow 57 \rightarrow 44$。
- 距离 $= |50-21| + |21-16| + |16-57| + |57-44| = 29 + 5 + 41 + 13 = \mathbf{88}$。
难度: ⭐⭐⭐ 考点: #文件物理结构 #磁盘访问次数 #寻道距离
💡 学习锦囊
📖 相关公式与知识点:
- 连续分配:顺序访问极快,插入删除困难。
- FAT(文件分配表):静态链表,存储在内存中可大幅减少寻道。
🔄 举一反三
- 在 FAT 文件系统中,若 FAT 表已全部加载到内存,则读取文件第 100 个磁盘块需要访问磁盘( )次。
- A. 0
- B. 1
- C. 100
- D. 101:::: :::::
查看练习答案与解析
答案:B 解析:FAT 在内存中可直接定位目标块号,只需 1 次读盘即可获取数据。
7、(10分)某 Linux系统中采用 ext4的文件系统 and 多级目录,根目录常驻内存,磁盘块大小 512B,目录项由文件名 14B and i 节点号 2B 组成,索引块中盘块号大小 4B。用 户 usera 目 录 的路径 名 是 /usr/home/usera, 用 户 userb 目 录的 路 径 名是/home/userb。usera 在其目录下创建了目录文件 asdf and 普通文件 my.c,并在 asdf目录下创建了普通文件 file1 and file2;userb 在其目录下创建了目录文件 asdf and 普通文件 hust1,并且在目录文件下创建了普通文件 file1 and file2。
(1)画出上述文件系统的目录结构(目录用方框表示,文件用圆框表示)。 (2)若 usera 的 file1 and userb 的 hust1 是同一个文件,file1 文件已经存在,则用户 userb使用什么命令创建的 hust1 文件?如果后来用户 usera 删除了 file1,对 hust1 有何影响? (3)若目录采用线性检索法查找文件,usera要读入自己目录下的file2文件的第7456块,需要访问硬盘多少次?
查看答案与解析
答案:
(1)目录树结构:
/ (根目录)
/ \
usr home
| |
home userb
| |
usera asdf —— file1, file2
/ \ |
my.c asdf hust1
|
file1, file22
3
4
5
6
7
8
9
10
11
(2)硬链接操作:
- 命令:
ln /usr/home/usera/asdf/file1 /home/userb/hust1 - 影响:无影响。硬链接仅增加 inode 的引用计数,删除
file1不会销毁底层数据。
(3)读硬盘次数计算:
- 目录解析(根在内存):读
usr$\rightarrow$home$\rightarrow$usera$\rightarrow$asdf共 4次。 - 读
file2的 Inode:1次。 - 文件索引定位:第 7456 块位于二级间接索引,需读一级、二级索引块及数据块共 3次。
- 总计:$4 + 1 + 3 = \mathbf{8次}$。
难度: ⭐⭐⭐ 考点: #UNIX索引节点 #目录检索 #硬链接
💡 学习锦囊
📖 相关公式与知识点:
- 软链接 vs 硬链接:
- 硬链接:共享 inode。
- 软链接:独立文件,存储目标路径。 ::::
🔄 举一反三
- 下列关于硬链接和软链接的说法,正确的是( )。
- A. 硬链接可以跨文件系统创建
- B. 删除源文件后,软链接仍然可以正常访问文件内容
- C. 硬链接与原文件共享同一个 inode
- D. 软链接会增加目标文件的引用计数:::: :::::
查看练习答案与解析
答案:C 解析:硬链接共享 inode(引用计数+1),不可跨文件系统;软链接存储路径,删除源文件后失效。